/*
 * Copyright 2011 John Alström
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package se.elva.slticket.dialog;

import se.elva.slticket.R;
import se.elva.slticket.repository.SavedStates;
import android.app.Dialog;
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;

public class ChangePasswordDialog extends Dialog{

	
	private Button okButton;
	private Button cancelButton;
	private EditText oldPassword;
	private EditText newPassword;
	private EditText confirmPassowrd;
	
	public ChangePasswordDialog(Context context) {
		super(context);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		
		LayoutInflater factory = LayoutInflater.from(context);
		final View textEntryView = factory.inflate(R.layout.change_password_dialog,null);
		this.setContentView(textEntryView);
		addOkButton();
		addCancelButton();
		cancelButton.setOnClickListener(onCancelListener);
		addPasswordEditText();
		addNewPasswordEditText();
		addConfirmPasswordEditText();
	}
	
	private void addConfirmPasswordEditText() {
		this.confirmPassowrd = (EditText)findViewById(R.id.confirmNewPassword);
		this.confirmPassowrd.addTextChangedListener(confirmPasswordWatcher);
		
	}

	private void addNewPasswordEditText() {
		this.newPassword = (EditText)findViewById(R.id.newPassword);
		
	}

	TextWatcher oldPasswordWatcher = new TextWatcher() {
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			checkPassword();
		}

		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
		}

		public void afterTextChanged(Editable s) {

		}
	};
	
	TextWatcher confirmPasswordWatcher = new TextWatcher() {
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			checkConfirmPassword();
		}


		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
		}

		public void afterTextChanged(Editable s) {

		}
	};
	
	android.view.View.OnClickListener onCancelListener = new android.view.View.OnClickListener() {
		public void onClick(View v) {
			cancel();
		}
	
	};

	
	android.view.View.OnClickListener onOkListener = new android.view.View.OnClickListener() {
		public void onClick(View v) {
			if(isConfirmPasswordCorrect() && !confirmPassowrd.getEditableText().toString().equals("")){
				new SavedStates(getContext()).savePassword(confirmPassowrd.getEditableText().toString());
				cancel();
			}
		}
	
	};
	
	private void addPasswordEditText(){
		this.oldPassword = (EditText)findViewById(R.id.oldPassword);
		this.oldPassword.addTextChangedListener(oldPasswordWatcher);
		checkPassword();
	}

	private void checkConfirmPassword() {
		if (isConfirmPasswordCorrect()) {
			confirmPassowrd
					.setBackgroundResource(R.drawable.greenedittext_background);
		} else {
			confirmPassowrd
					.setBackgroundResource(R.drawable.rededittext_background);

		}
	}
	
	private boolean isConfirmPasswordCorrect(){
		if(confirmPassowrd.getEditableText().toString().equals(newPassword.getEditableText().toString())){
			return true;
		}else{
			return false;
		}
	}
	
	private void checkPassword() {
		if (isOldPassword() && !oldPassword.getText().toString().equals("")) {
			oldPassword
					.setBackgroundResource(R.drawable.greenedittext_background);
		} else {
			oldPassword
					.setBackgroundResource(R.drawable.rededittext_background);

		}
	}
	
	private boolean isOldPassword() {
		if(oldPassword.getEditableText().toString().equals(new SavedStates(getContext()).getSavedPassword()))
				return true;
		return false;
	}



	private void addOkButton(){
		this.okButton = (Button)findViewById(R.id.ok);	
		this.okButton.setOnClickListener(onOkListener);
	}
	
	public Button getOkButton(){
		return this.okButton;
	}
	private void addCancelButton(){
		this.cancelButton = (Button)findViewById(R.id.cancel);	
	}
	
	public Button getCancekButton(){
		return this.cancelButton;
	}

}
